package com.chainyoung.component_tmperson.di.module;


import com.chainyoung.common.di.scope.ActivityScope;
import com.chainyoung.common.di.scope.FragmentScope;
import com.chainyoung.component_tmperson.ui.mvp.contract.GetPurseListContract;
import com.chainyoung.component_tmperson.ui.mvp.contract.HdWalletContract;
import com.chainyoung.component_tmperson.ui.mvp.contract.HdWalletTokenListContract;
import com.chainyoung.component_tmperson.ui.mvp.contract.ImportWalletContract;
import com.chainyoung.component_tmperson.ui.mvp.contract.WalletContact;
import com.chainyoung.component_tmperson.ui.mvp.contract.WalletDebitContract;
import com.chainyoung.component_tmperson.ui.mvp.contract.WalletFinancingMangeContract;
import com.chainyoung.component_tmperson.ui.mvp.contract.WalletLocalContract;
import com.chainyoung.component_tmperson.ui.mvp.model.GetPurseListModel;
import com.chainyoung.component_tmperson.ui.mvp.model.HdWalletModel;
import com.chainyoung.component_tmperson.ui.mvp.model.HdWalletTokenListModel;
import com.chainyoung.component_tmperson.ui.mvp.model.ImportWalletModel;
import com.chainyoung.component_tmperson.ui.mvp.model.WalletDebitModel;
import com.chainyoung.component_tmperson.ui.mvp.model.WalletFinancingMangeModel;
import com.chainyoung.component_tmperson.ui.mvp.model.WalletLocalModel;
import com.chainyoung.component_tmperson.ui.mvp.model.WalletModel;

import dagger.Module;
import dagger.Provides;

@Module
public class PersonFragmentModule {

    private WalletContact.View view;

    private WalletLocalContract.View localView;

    private GetPurseListContract.View purseListView;

    private ImportWalletContract.View importView;

    private WalletFinancingMangeContract.View walletFinancingView;

    private WalletDebitContract.View debitView;

    private HdWalletTokenListContract.View tokenListView;

    private HdWalletContract.View hdWalletView;


    public PersonFragmentModule(WalletContact.View view) {
        this.view = view;
    }

    public PersonFragmentModule(WalletLocalContract.View view) {
        this.localView = view;
    }

    public PersonFragmentModule(GetPurseListContract.View view) {
        this.purseListView = view;
    }

    public PersonFragmentModule(ImportWalletContract.View view) {
        this.importView = view;
    }

    public PersonFragmentModule(WalletFinancingMangeContract.View view) {
        this.walletFinancingView = view;
    }

    public PersonFragmentModule(WalletDebitContract.View view) {
        this.debitView = view;
    }

    public PersonFragmentModule(HdWalletTokenListContract.View view) {
        this.tokenListView = view;
    }

    public PersonFragmentModule(HdWalletContract.View view) {
        this.hdWalletView = view;
    }


    @FragmentScope
    @Provides
    WalletContact.View providerWalletView() {
        return this.view;
    }

    @FragmentScope
    @Provides
    WalletContact.Model providerWalletModel(WalletModel model) {
        return model;
    }

    @FragmentScope
    @Provides
    WalletLocalContract.View providerWalletLocalView() {
        return this.localView;
    }

    @FragmentScope
    @Provides
    WalletLocalContract.Model providerWalletLocalModel(WalletLocalModel model) {
        return model;
    }

    @FragmentScope
    @Provides
    GetPurseListContract.Model providerGetPurseModel(GetPurseListModel model) {
        return model;
    }


    @FragmentScope
    @Provides
    GetPurseListContract.View providerGetPurseView() {
        return this.purseListView;
    }


    @FragmentScope
    @Provides
    ImportWalletContract.View providerImportWalletView() {
        return this.importView;
    }

    @FragmentScope
    @Provides
    ImportWalletContract.Model providerImportWalletModel(ImportWalletModel model) {
        return model;
    }


    @FragmentScope
    @Provides
    WalletFinancingMangeContract.View providerWalletFinancingView() {
        return this.walletFinancingView;
    }

    @FragmentScope
    @Provides
    WalletFinancingMangeContract.Model providerWalletFinancingModel(WalletFinancingMangeModel model) {
        return model;
    }


    @FragmentScope
    @Provides
    WalletDebitContract.View providerWalletDebitView() {
        return this.debitView;
    }

    @FragmentScope
    @Provides
    WalletDebitContract.Model providerWalletDebitModel(WalletDebitModel model) {
        return model;
    }


    @FragmentScope
    @Provides
    HdWalletTokenListContract.View providerHdWalletTokenListView() {
        return this.tokenListView;
    }

    @FragmentScope
    @Provides
    HdWalletTokenListContract.Model providerHdWalletTokenListModel(HdWalletTokenListModel model) {
        return model;
    }


    @FragmentScope
    @Provides
    HdWalletContract.View providerHdWalletView() {
        return this.hdWalletView;
    }


    @FragmentScope
    @Provides
    HdWalletContract.Model providerHdWalletModel(HdWalletModel model) {
        return model;
    }


}
